<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        /*
        房子(House) 有 户型、总面积 、剩余面积 和 家具名称列表 属性
        新房子没有任何的家具
        将 家具的名称 追加到 家具名称列表 中
        判断 家具的面积 是否 超过剩余面积，如果超过，提示不能添加这件家具
        家具(HouseItem) 有 名字 和 占地面积属性，其中
        席梦思(bed) 占地 4 平米
        衣柜(chest) 占地 2 平米
        餐桌(table) 占地 1.5 平米
        将以上三件 家具 添加 到 房子 中
        打印房子时，输出：户型、总面积、剩余面积、家具名称列表


       



        思考：

        在这个逻辑里，一共要设计几个类？

        每个类里都要定义哪些属性和方法？
        先设计哪个类，为什么？
        
        
        
        
        */

        // 房子类 (构造函数\机器) 
        // 户型 总面积(用户定) 剩余面积 家具列表   -> 家具列表为空  

        // 家具类   
        // 名称  占地面积 

        // // 房子类
        // class House{
        //     constructor(type,area){
        //         this.type  = type;
        //         this.totalarea = area;
        //         this.leftarea = area;
        //         this.items = [];
        //     }

        //     // 添加家具 
        //     // 参数应该是家具
        //     // item是家具 家具是个对象 
        //     // 家具对象有 名字和占地面积属性
        //     addItem(item){
        //         if(item.area > this.leftarea){
        //             console.log(`不能添加${item.name}剩余面积不足`);
        //             return;
        //         }
        //         this.items.push(item.name); // 把家具名称加入到家具列表中 
        //         // 剩余面积要减掉添加进来的家具的面积
        //         this.leftarea -= item.area;
        //         console.log(`成功添加${item.name}`);



        //     }

        //     //输出内容 
        //     toData(){
        //         return `户型${this.type}、总面积${this.totalarea}、剩余面积${this.leftarea}、家具名称列表${this.items.join('、')}`
        //     }
        // }

       

        // // 家居类
        // class HouseItem{
        //     constructor(name,area){
        //         this.name = name;
        //         this.area = area;  
        //     }

        //     // 不需要方法
        // }

        // var i1 = new HouseItem('席梦思',4);
        // console.log(i1.area);
        // var i2 = new HouseItem('衣柜',2);
        // var i3 = new HouseItem('餐桌',1.5);

        // var h1 = new House('三室一厅',120);
        
        // h1.addItem(i1);
        // h1.addItem(i2);
        // h1.addItem(i3);
        // h1.addItem(i1);
        // h1.addItem(i2);
        // h1.addItem(i3);
        // h1.addItem(i1);
        // h1.addItem(i2);
        // h1.addItem(i3);
        // h1.addItem(i1);
        // h1.addItem(i2);
        // h1.addItem(i3);

        // console.log(h1.toData());




        // ----------------------


         // 两个类 
        // 房子类 
        // 属性:户型、总面积 、剩余面积 和 家具名称列表
        // 方法: 添加家具 输出结果 

        class House{
            constructor(type,area){
                this.type = type;
                this.totalArea = area;
                this.leftArea = area;
                this.items = []; //新房子家具是空的 
            }

            // 添加家具的方法  
            // 家具是一个对象 
            // 家具对象身上存在两个属性  一个name 名称 一个是占地面积 itemarea


            addItem(jiajuduxiiang){
                // 将 家具的名称 追加到 家具名称列表 中
                // 传过来家具对象的名称    this.items 家具列表 数组
                if(jiajuduxiiang.itemarea>this.leftArea){
                    console.log(`添加${jiajuduxiiang.name}失败,剩余面积不足`);
                    return 
                } 
                this.items.push(jiajuduxiiang.name);
                // 房子的剩余面积减小 

                this.leftArea -= jiajuduxiiang.itemarea;
                console.log(`添加${jiajuduxiiang.name}成功`);
                
            }

            // 输出结果的方法
            toRes(){
                return `户型${this.type}、总面积${this.totalArea}、剩余面积${this.leftArea}、家具名称列表${this.items.join('、')}`
            }
        }

        

        // 家具类
        // 属性 : 名字 和 占地面积属性
        // 方法: 无
        class HouseItem{
            // static kangbazi = 666;
            constructor(name,itemarea){
                this.name = name;
                this.itemarea = itemarea;
            }
            
        }
        var h1 = new House('三室两厅两卫',60); // 房子
        var i1 = new HouseItem('席梦思',4); // 家具
        var i2 = new HouseItem('衣柜',2); // 家具
        var i3 = new HouseItem('餐桌',1.5); // 家具
        var i4 = new HouseItem('大床',55); // 家具

        h1.addItem(i1);
        h1.addItem(i2);
        h1.addItem(i3);
        h1.addItem(i4);


        
        console.log(h1.toRes());


    </script>
</body>

</html>